package cn.xyfmzmy.flyweight;

/**
 * 享元模式的典型案例：
 * 1. 把一大堆常用的小对象作为不可变且共享的，放入池子中，使用时直接从池子里获取。如String常量池、Integer缓存
 * 2. 线程池，让池子帮我们维护线程对象，无需操作池子里的线程对象，只需要让池子帮我们干活
 * 3. 连接池，连接创建的开销是比较大的，需要让池子来维护连接对象，需要时直接获取，但当前可能没有，需要等待创建，用完了需要再放回池子
 */
public class Main {

    public static void main(String[] args) {
        Integer a = 1;
        Integer b = 1;
        // 显示为true，因为Integer缓存里会存放-128～127的对象，创建时直接返回缓存池里的对象，所以这里是同一个对象
        System.out.println(a == b);
        Integer c = 1000;
        Integer d = 1000;
        // 显示为false，因为不在缓存池的范围内，会直接创建新的对象
        System.out.println(c == d);
    }
}
